package br.com.proway.biblioteca;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;



import br.com.proway.conexao.conexao;

public class Estado extends EstadoAbstrato {
	
	private conexao conexao; 
	public Estado(){
		conexao = new conexao();
	}
	private String nome;
	private int codigo; 
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	@Override
	public void AlterarEstado(int codigo, String nome) throws Exception {
		// TODO Auto-generated method stub
		String sql ="update estado set nome = ? where codigo = ?";
		PreparedStatement sqlPrep = conexao.getConnection().prepareStatement(sql);
		sqlPrep.setString(1, nome);
		sqlPrep.setInt(2, codigo);
		sqlPrep.execute();

	}

	@Override
	public void ExcluirEstado(int codigo) throws Exception {
		// TODO Auto-generated method stub
		String sql ="delete from estado where codigo = ?";
		PreparedStatement sqlPrep = conexao.getConnection().prepareStatement(sql);
		sqlPrep.setInt(1, codigo);
		sqlPrep.execute();
	}

	@Override
	public void cadastrarEstado(String nome) throws Exception {
		// TODO Auto-generated method stub
		String sql ="insert into estado (nome) values (?)";
		PreparedStatement sqlPrep = conexao.getConnection().prepareStatement(sql);
		sqlPrep.setString(1, nome);
		sqlPrep.execute();
	}

	@Override
	public ResultSet ConsultarEstado(String nome) throws Exception {
		String sql ="select * from estado ";
		if (nome != null){
			sql+=" where nome = ?";
		}
		PreparedStatement sqlPrep = conexao.getConnection().prepareStatement(sql);
		if (nome != null){
			sqlPrep.setString(1, nome);
		}
		return sqlPrep.executeQuery();
	}
	


	public int retornarProximoCodigoEstado() throws Exception {
		String sql ="select max(codigo)+1 as codigo from estado ";
		PreparedStatement sqlPrep = conexao.getConnection().prepareStatement(sql);
		ResultSet rs = sqlPrep.executeQuery();
		if (rs.next()){
			return rs.getInt("codigo");
		}else{
			return 1; 
		}
		
	}
	public static void main(String[] args) throws Exception {
		Estado e = new Estado(); 
		e.cadastrarEstado("Sao paulo");
		e.AlterarEstado(2, "SP");
		e.ExcluirEstado(3);
		e.ConsultarEstado("SP");
	}

	public int getCodigoFromEstado() throws Exception {
		ResultSet rs = ConsultarEstado(this.getNome());
		if (rs.next()){
			setCodigo(rs.getInt("codigo"));
			return getCodigo();
		}else{
			return 0; 	
		}
		 
	}
}
